<?php
require 'loader.php';

function isConfigured()
{
    try
    {
       WDB\Database::getInstance('log')->getSchema(); 
       return true;
    }
    catch (WDB\Exception\WDBException $ex)
    {
        return false;
    }
}

function processTemplate($in, $out, array $params = array())
{
    file_put_contents($out, str_replace(array_keys($params), array_values($params), file_get_contents($in)));
}

if (isset($_POST['mysql']))
{
    $replacement = array(
        '%mysql_host%'=>@$_POST['mysql']['server'],
        '%mysql_user%'=>@$_POST['mysql']['user'],
        '%mysql_pwd%'=>@$_POST['mysql']['pwd'],
        '%mysql_port%'=>!empty($_POST['mysql']['port']) ? $_POST['mysql']['port'] : 'NULL',
        '%oci_exists%'=>empty($_POST['oracle']['install']) ? 'ONLY-' : '',
        '%oci_host%'=>@$_POST['oracle']['server'],
        '%oci_user%'=>@$_POST['oracle']['user'],
        '%oci_pwd%'=>@$_POST['oracle']['pwd'],
        '%oci_port%'=>!empty($_POST['oracle']['port']) ? $_POST['oracle']['port'] : 'NULL',
        '%oci_service%'=>@$_POST['oracle']['service'],
        '%oci_server_type%'=>@$_POST['oracle']['server_type'],
        '%oci_instance%'=>@$_POST['oracle']['instance'],
    );
    processTemplate(__DIR__.'/!setup/templates/config-main.php', __DIR__.'/config.php', $replacement);
    processTemplate(__DIR__.'/!setup/templates/config-pujcovna.php', __DIR__.'/demos/pujcovna/config.php', $replacement);
    processTemplate(__DIR__.'/!setup/templates/config-prekazky.php', __DIR__.'/demos/prekazky.cz/!/app/config/wdb-config.php', $replacement);
    header('location: ?setupStep=2');die();
}
if (@$_GET['setupStep'] == 2)
{
    WDB\Database::getInstance('log_install')->queryRaw(file_get_contents(__DIR__.'/!setup/database.mysql.sql'), TRUE);
    $my = WDB\Database::getInstance('mysql_install');
    $my->queryRaw(file_get_contents(__DIR__.'/demos/prekazky.cz/!/prekazky.mysql.sql'), TRUE);
    $my->queryRaw(file_get_contents(__DIR__.'/demos/pujcovna/pujcovna.mysql.sql'), TRUE);
    ob_start();
    require __DIR__.'/demos/encorep/create-bad-encoding.php';
    ob_end_clean();
    if (!empty($_POST['oracle']['install']))
    {
        $oci = WDB\Database::getInstance('oci_install');
        try {
            $oci->queryRaw(file_get_contents(__DIR__.'/demos/prekazky.cz/!/prekazky.oracle.sql'), TRUE);
        }catch (WDB\Exception\WDBException $ex) {}
    }
    header('location: ?installed=1');die();
}

$pconfigFile = __DIR__.'/demos/prekazky.cz/!/app/config/wdb-config.php';
$pconfig = file_get_contents($pconfigFile);
if (isset($_GET['prekazkydb']))
{
    if ($_GET['prekazkydb'] == 'oci' && preg_match('~#!!!DBENGINE!!! MY~', $pconfig))
    {
        $pconfig = str_replace('#!!!DBENGINE!!! MY', '#!!!DBENGINE!!! OCI', $pconfig);
        $pconfig = preg_replace('~\'default\'(.*#!!!MY!!!)~', "'my'\\1", $pconfig);
        $pconfig = preg_replace('~\'[a-zA-Z]+\'(.*#!!!OCI!!!)~', "'default'\\1", $pconfig);
        file_put_contents($pconfigFile, $pconfig);
    }
    if ($_GET['prekazkydb'] == 'my' && preg_match('~#!!!DBENGINE!!! OCI~', $pconfig))
    {
        $pconfig = str_replace('#!!!DBENGINE!!! OCI', '#!!!DBENGINE!!! MY', $pconfig);
        $pconfig = preg_replace('~\'default\'(.*#!!!OCI!!!)~', "'oci'\\1", $pconfig);
        $pconfig = preg_replace('~\'[a-zA-Z]+\'(.*#!!!MY!!!)~', "'default'\\1", $pconfig);
        file_put_contents($pconfigFile, $pconfig);
    }
}



?><!DOCTYPE html>
<html><head>
<link rel="stylesheet" href="public/twitter-bootstrap/bootstrap.css">
<style type="text/css">
    body {padding: 2em}
    .ok {color:#6c6; font-weight:bold;}
    .error {color:#f00; font-weight:bold;}
</style>
<script type="text/javascript" src="public/jquery-1.7.1.min.js"></script>
<meta http-equiv="content-type" content="text/html;charset=utf8">
<title>WheelDB Demo</title>
</head>
<body>
    <h1>WheelDB framework - ukázkové aplikace</h1>
    <?php if(isConfigured()): ?>
        <?php if (@$_GET['installed'] == 1): ?>
        <p class="ok">Gratulujeme, WheelDB framework s ukázkami byl úspěšně zkonfigurován.</p>
        <?php else: ?>
        <p class="ok">WheelDB framework s ukázkami je zkonfigurován.</p>
        <p>Pokud si přejete provést konfiguraci znovu, odstraňte z MySQL schéma tabulek "wdb" a vyprázdněte adresář var/schemata.</p>
        <?php endif; ?>
    <h2>Připravené ukázkové aplikace</h2>
    <ul>
        <li><a target="_blank" href="demos/prekazky.cz/">web prekazky.cz</a> (<a target="_blank" href="demos/prekazky.cz/admin/">administrace</a>)
            <?php
            if (preg_match('~#!!!DBENGINE!!! MY~', $pconfig)):?>
            Nastaveno pro MySQL databázi. <a href="?prekazkydb=oci">změnit na Oracle</a>
            <?php elseif (preg_match('~#!!!DBENGINE!!! OCI~', $pconfig)):?>
            Nastaveno pro Oracle databázi. <a href="?prekazkydb=my">změnit na MySQL</a>
            <?php elseif (preg_match('~#!!!DBENGINE!!! ONLY-MY~', $pconfig)):?>
            Oracle databáze nebyla zkonfigurována. Pokud provedete ruční konfiguraci, odstraňte text "ONLY-" ze souboru demos/prekazky.cz/!/app/config/wdb-config.php.
            <?php else:?>
            Nenalezena potřebná metadata v souboru wdb-config.php. Výběr databázové platformy, prosím, proveďte v tomto souboru ručně záměnou konfigurace připojeni <em>default</em>.
            <?php endif;?>
            <br />Pokud tato ukázka nefunguje, zkuste upravit direktivu RewriteBase v souboru <em>demos/prekazky.cz/.htaccess</em> dle instrukcí v komentáři této direktivy.
        </li>
        <li><a target="_blank" href="demos/pujcovna/">půjčovna</a></li>
        <li>encorep
            <ul>
                <li><a target="_blank" href="demos/encorep/create-bad-encoding.php">simulace problému se znakovou sadou</a></li>
                <li><a target="_blank" href="demos/encorep/encorep.php">utilita pro řešení problému se znakovou sadou</a></li>
            </ul>
        </li>
    </ul>
    <?php else: ?>
    <p class="error">Framework s ukázkami není zkonfigurován. Vyplňte, prosím, následující formulář pro automatickou konfiguraci.</p>
    <form method="post" action="">
        <h2>MySQL server</h2>
        <p>Zadaný uživatelský účet MySQL musí mít povolení k vytváření schémat (databází), tabulek a zápisu dat.
        Pokud takový účet nemáte k dispozici, bude nutné provést instalaci databáze WheelDB ručně.</p>
        <table>
            <tr>
                <th>Server:</th>
                <td><input type="text" name="mysql[server]" value="127.0.0.1"></td>
            </tr>
            <tr>
                <th>Uživ. jméno:</th>
                <td><input type="text" name="mysql[user]" value="root"></td>
            </tr>
            <tr>
                <th>Heslo:</th>
                <td><input type="password" name="mysql[pwd]" id="mypwd" value="">
                    <a href="#" onclick="var $inp = $('#mypwd'); if ($inp.attr('type') == 'password') $inp.attr('type', 'text'); else $inp.attr('type', 'password'); return false"</td>
            </tr>
            <tr>
                <th>Port:</th>
                <td><input type="number" name="mysql[port]" value="">(prázdné pole = výchozí)</td>
            </tr>
        </table>
        <h2>Oracle server</h2>
        <p>Zadaný uživatelský účet Oracle musí mít povolení k vytváření tabulek a zápisu dat.</p>
        <table>
            <tr>
                <th>Instalovat:</th>
                <td><input type="checkbox" checked name="oracle[install]" value="1"> Tuto volbu zrušte, pokud nemáte k dispozici databázový server Oracle.</td>
            </tr>
            <tr>
                <th>Server:</th>
                <td><input type="text" name="oracle[server]" value="127.0.0.1"></td>
            </tr>
            <tr>
                <th>Uživ. jméno:</th>
                <td><input type="text" name="oracle[user]" value="root"></td>
            </tr>
            <tr>
                <th>Heslo:</th>
                <td><input type="password" name="oracle[pwd]" id="ocipwd" value="">
                    <a href="#" onclick="var $inp = $('#ocipwd'); if ($inp.attr('type') == 'password') $inp.attr('type', 'text'); else $inp.attr('type', 'password'); return false"</td>
            </tr>
            <tr>
                <th>Port:</th>
                <td><input type="number" name="oracle[port]" value="">(prázdné pole = výchozí)</td>
            </tr>
            <tr>
                <th>Služba:</th>
                <td><input type="text" name="oracle[service]" value="xe"></td>
            </tr>
            <tr>
                <th>Typ serveru:</th>
                <td><input type="text" name="oracle[server_type]" value=""></td>
            </tr>
            <tr>
                <th>Název instance:</th>
                <td><input type="text" name="oracle[instance]" value=""></td>
            </tr>
        </table>
        <p><input type="submit" value="Uložit nastavení"></p>
    </form>
    <?php endif; ?>
</body>
</html>